Applications
AnApplication is a concrete BindAI runtime object representing a business application inside a project.
Applications provide a focused container for agents and expose convenient execution methods for those agents.
An application is normally created with an ApplicationConfiguration and then populated with one or more Agent instances.
What Is an Application?
The current BindAI implementation provides a concrete:ApplicationConfiguration:
Application Configuration
EveryApplication is created with an ApplicationConfiguration.
ApplicationConfiguration is a dataclass using slots.
The application exposes its configured name through:
Creating an Application
A minimal application can be created with only a name:Agents
Agents are the primary executable resources currently managed directly by anApplication.
The application stores agents in:
Retrieving Agents
An agent can be retrieved by name:KeyError is raised.
Running an Agent
Applications provide a convenience method for executing an agent:- Looks up the agent by name.
- Calls the agent’s
chat()method. - Returns the result from the agent.
Agent is responsible for the actual agent execution.
Streaming
Applications also expose streaming through:Agent implementation.
Conceptually:
Multiple Agents
An application can contain multiple agents:Example Application
A simple application might look like:Application and Agent Responsibilities
Applications and agents have different responsibilities.Application
The application provides:- application identity
- agent registration
- agent lookup
- agent execution helpers
- agent streaming helpers
Agent
The agent provides:- model-driven execution
- instructions
- tools
- memory/context behavior
- provider interaction
- agent-specific execution behavior
Workflows
The currentApplication class initializes:
WorkflowRegistry and does not currently expose application methods such as:
Project provides:
Knowledge
The currentApplication class initializes:
- document ingestion
- retrieval
- embeddings
- vector stores
- RAG pipelines
- knowledge search
application.knowledge should therefore not be interpreted as automatic knowledge retrieval.
Memory
The currentApplication class also initializes:
memories collection is currently an extension point for application-owned memory-related resources.
Application Resources
The current concrete application object contains:Connections
Applications can use BindAI connections and external services through the broader BindAI ecosystem. Current connection types include:- Webhook
- GitHub
- Slack
- Notion
- Jira
- Discord
- Resend
- Vercel
- Netlify
- Google Sheets
- Google Docs
- Gmail
- Google Drive
Application itself does not currently contain a dedicated connection registry.
Connections are provided by the bindai-connections package and can be composed into applications through tools, workflows, or other application-level components.
Tools
Agents can use tools as part of their execution. The application itself does not currently expose a dedicated tool registry. Project-level shared tools are provided through:Project and Application Relationship
AProject can contain multiple applications.
For example:
Application Boundaries
Applications are useful when a project contains several distinct business domains. Good examples include:Application Isolation
Applications have separate agent collections. For example:Application objects.
Python Helpers
Application provides several Python convenience methods.
Membership
You can check whether an agent exists:Length
Iteration
You can iterate over the application’s agents:Application API
The current public Application API includes:Construction
Configuration
Agent management
Execution
Application-level collections
Python helpers
Application Lifecycle
A typical application lifecycle is:Application Entry Points
An application can be reached through different surrounding interfaces. For example:Application class.
For example, the REST API is provided by the separate bindai-api package.
The application provides the Python-level execution interface that those surrounding systems can call.
REST API Integration
The BindAI REST API can expose configured projects and their applications. The API’s agent endpoints operate on the configured BindAI application:Application object in the Python process.
Streaming and REST
Application-level streaming:stream_chat() method.
The REST API wraps the resulting stream in its HTTP response mechanism.
The current REST API uses a plain HTTP StreamingResponse; it is not documented as an SSE protocol.
Error Handling
Application-level execution delegates to the selected agent:Security
AnApplication object does not itself provide authentication or authorization.
Security should be implemented at the appropriate surrounding layer.
For example:
- authentication
- authorization
- API key protection
- tool permissions
- knowledge access
- memory isolation
- provider credentials
- external connection credentials
- sensitive output handling
Application class.
Recommended Usage
UseApplication when you want a concrete container for related agents.
A simple application can be:
Current Scope
The currentApplication implementation is intentionally lightweight.
It directly provides:
- application configuration
- application identity
- agent registration
- agent lookup
- agent execution
- agent streaming
- Python collection helpers
- workflows
- knowledge
- memories
- a built-in workflow registry
- a built-in workflow scheduler
- a built-in tool registry
- a built-in connection registry
- a built-in knowledge database
- a built-in memory database
- authentication
- authorization
- distributed execution
- persistence
- multi-tenant isolation
Package
Applications are provided by thebindai-application package.
The core implementation contains:
Application vs Project
In simple terms:
Project → organizes applications and shared project resources.
Application → organizes and executes agents for a business domain.
Summary
The current BindAIApplication is a concrete, lightweight runtime container for related agents.
Its primary responsibilities are:
Project.
For agent behavior and execution, use Agent.
This separation keeps the current BindAI architecture lightweight while allowing applications and projects to compose the framework’s more specialized subsystems.